import {Toast} from "vant";
import { Http, Uploader } from "./HttpClient";



class CachePhotoUtils {
  static singleInstance;
  static themeColor='#3676F5';
  static instance() {
    if (!this.singleInstance) {
      this.singleInstance = new CachePhotoUtils();
    }
    return this.singleInstance;
  }

  writePhotoToSDCard(unHeadBase64, fileName, callBack) {
    console.log("图片缓存，不上传");
    var toast = Toast.loading({
      duration: 0,
      message: "正在缓存图片中...",
      forbidClick: true
    });
    var filePath = "sjtd/image/handyPhoto/" + fileName + ".txt";
    console.log("图片路径：" + filePath);
    //文件内容
    var fileContent = unHeadBase64;
    //文件类型
    var fileType = 'text/plain';
    var that = this;
    console.log("调用写文件");
    navigator.file.writeFile(function(msg){
      console.log("写入成功:" + msg);
      console.log("路径：" + filePath);
      // that.currentPhoto =`data:image/jpeg;base64,${unHeadBase64}`;
      if(callBack) {
        callBack(filePath);
      }
      Toast.clear();
    }, function(msg){
      console.log("写入失败：" + JSON.stringify(msg));
    }, filePath, fileContent, fileType);

  }

  readFile(filePath, successCallBack, errorCallBaCK){
    navigator.file.readFile(function(msg){
      if(successCallBack) {
        successCallBack(msg);
      }
    }, function(msg){
      if(errorCallBaCK) {
        errorCallBaCK(msg)
      }
    }, filePath);
  }

  submitImageObject(imageObject, callBack) {
    if(imageObject == null &&　callBack　!= null) {
      　callBack("参数为空，请检查");
    }
    console.log("提交图片信息：" + JSON.stringify(imageObject));
    var fileArray = [];
    fileArray.push(imageObject.imageUrl);
    var fileArrayString = JSON.stringify(fileArray);
    console.log("测试");
    Http.instance()
      .postJSON({
        url: "/gmms-server/externalController",
        autoShowWait:false,
        data: {
          route: "CommonController_saveFileByCache",
          params: {
            filePath: fileArrayString,
            fileType: imageObject.imageType,
            ownerId: imageObject.businessId,
            bz: imageObject.imageRemark,
          },
        },
      })
      .then((result) => {
        console.log("提交图片回调：" + JSON.stringify(result));
        if(callBack) {
          callBack(result);
        }
      });
  }

  quereyStorageImageMsgObject(imageMsgObjectId) {
    // console.log("查询到图片信息对象id:" + imageMsgObjectId);
    var targetImageMsgObject = null;
    var imageMsgObjectList = this.getStorageImageMsgObjectList();
    if(imageMsgObjectList.length >= 0) {
      for(var y = imageMsgObjectList.length - 1; y >= 0; y--) {
        var imageMsgObject = imageMsgObjectList[y];
        if(imageMsgObject != null && imageMsgObjectId == imageMsgObject.imageMsgObjectId) {
          targetImageMsgObject = imageMsgObject;
          break;
        }
      }
    }
    // console.log("查询到图片信息对象：" + JSON.stringify(targetImageMsgObject));
    return targetImageMsgObject;
  }

  saveStorageImageMsgObject(imageMsgObject, callBack) {
    console.log("开始保存数据：" + JSON.stringify(imageMsgObject));
    this.removeStorageImgeMsgObject(imageMsgObject.imageMsgObjectId);
    var imageMsgObjectList = this.getStorageImageMsgObjectList();
    //时间按倒序排列，时间越晚就排越前面
    var isPush = false;
    for(var i = 0; i < imageMsgObjectList.length; i++) {
      var imageMsgObjectItem = imageMsgObjectList[i];
      var imageMsgObjectTempDate = new Date(imageMsgObjectItem.date.replace(/-/g, '/'));
      var imageMsgObjectDate = new Date(imageMsgObject.date.replace(/-/g, '/'));
      if(imageMsgObjectDate.getTime() > imageMsgObjectTempDate.getTime()) {
        console.log("开始时间大于结束时间");
        isPush = true;
        imageMsgObjectList.splice(i, 0, imageMsgObject);
        break;
      }else if(imageMsgObjectDate.getTime() == imageMsgObjectTempDate.getTime()) {
        console.log("开始时间等于结束时间");
        isPush = true;
        imageMsgObjectList.splice(i, 0, imageMsgObject);
        break;
      }else if(imageMsgObjectDate.getTime() < imageMsgObjectTempDate.getTime()){
        console.log("开始时间小于结束时间");
      }else{
        console.log("啥也不是");
      }
    }
    if(!isPush) {
      imageMsgObjectList.push(imageMsgObject);
    }
    //插入第一个元素
    // imageMsgObjectList.unshift(imageMsgObject);
    this.saveStorageImageMsgObjectList(imageMsgObjectList);
    if(callBack) {
      callBack();
    }
  }

  removeStorageImgeMsgObject(imageMsgObjectId){
    console.log("移除图片信息Id:" + imageMsgObjectId);
    var imageMsgObjectList = this.getStorageImageMsgObjectList();
    console.log("进入移除存储图片信息，移除前， 存储图片列表信息：" + JSON.stringify(imageMsgObjectList));
    if(imageMsgObjectList.length >= 0) {
      for(var y = imageMsgObjectList.length - 1; y >= 0; y--) {
        var imageMsgObject = imageMsgObjectList[y];
        if(imageMsgObject != null && imageMsgObjectId == imageMsgObject.imageMsgObjectId) {
          imageMsgObjectList.splice(y, 1);
        }
      }
    }
    console.log("进入移除存储图片，移除后， 存储图片信息列表信息：" + JSON.stringify(imageMsgObjectList));
    this.saveStorageImageMsgObjectList(imageMsgObjectList);
  }

  removeStorageImgeObject(imageId){
    console.log("进入移除存储图片，移除图片Id:" + imageId);
    var imageMsgObjectList = this.getStorageImageMsgObjectList();
    console.log("进入移除存储图片，移除前， 存储图片列表信息：" + JSON.stringify(imageMsgObjectList));
    if(imageMsgObjectList.length >= 0) {
      for(var y = imageMsgObjectList.length - 1; y >= 0; y--) {
        var imageMsgObject = imageMsgObjectList[y];
        var imageObjectList = imageMsgObject.imageObjectList;
        for(var i = imageObjectList.length - 1; i >= 0; i--) {
          var imageObject = imageObjectList[i];
          if(imageObject != null && imageId == imageObject.imageId) {
            imageObjectList.splice(i, 1);
          }
        }
        if(imageObjectList.length == 0){
          imageMsgObjectList.splice(y, 1);
        }
      }
    }
    console.log("进入移除存储图片，移除后， 存储图片列表信息：" + JSON.stringify(imageMsgObjectList));
    this.saveStorageImageMsgObjectList(imageMsgObjectList);
  }

  saveStorageImageMsgObjectList(imageMsgObjectList) {
    console.log("保存存储，图片列表信息：" + JSON.stringify(imageMsgObjectList));
    localStorage.setItem('photoCacheListLocalStorage', JSON.stringify(imageMsgObjectList));
  }   

  getStorageImageMsgObjectList() {
    var photoCacheList = localStorage.getItem('photoCacheListLocalStorage');
    var imageMsgObjectList = [];
    if(photoCacheList != null && photoCacheList != undefined) {
      imageMsgObjectList = JSON.parse(photoCacheList);
    }
    // console.log("获取存储图片列表信息：" + JSON.stringify(imageMsgObjectList));
    return imageMsgObjectList;
  }

}
export {
  CachePhotoUtils
};
